package com.rmb.service;

import com.rmb.common.model.response.ResponseResult;
import com.rmb.entity.EtlDataEngine;
import com.rmb.entity.EtlDataEngineVoResult;
import com.rmb.service.impl.EngIneHystrixImpl;
import org.springframework.cloud.openfeign.FeignClient;

import java.util.List;

/**
 * (EtlDataEngine)表服务接口
 *
 * @author makejava
 * @since 2021-01-13 10:24:40
 */
@FeignClient(value = "rmb-engine", fallback = EngIneHystrixImpl.class)
public interface EtlDataEngineService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    EtlDataEngine queryById(Long id);

    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    List<EtlDataEngine> queryAllByLimit(int offset, int limit);

    /**
     * 新增数据
     *
     * @param etlDataEngine 实例对象
     * @return 实例对象
     */
    EtlDataEngine insert(EtlDataEngine etlDataEngine);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    ResponseResult deleteById(Long id);

    /**
     * 根据ID请求数据
     * @param id id
     * @return getEngineId
     */
    EtlDataEngine getEngineId(Long id);

    /**
     * 编译代码
     * @param id id
     * @param compileJava 数据代码
     * @return compile
     */
    ResponseResult compile(Long id, String compileJava);

    /**
     * 引擎名称
     * @param etlDataEngine 修改的数据
     * @return Update
     */
    ResponseResult updateEtlDataEngine(EtlDataEngine etlDataEngine);


    /**
     *  查询所有
     *   模糊
     * @param page 查询起始位置
     * @param size 查询条数
     * @param engineName 引擎名称
     * @param engineTypeId 引擎ID
     * @param codeType 类型
     * @return selectEtlEngine
     */
    List<EtlDataEngineVoResult> list(int page, int size, String engineName, String engineTypeId, String codeType);

    /**
     * 根据id回显对象
     * @param id id
     * @return findById
     */
    EtlDataEngine findById(Long id);


    /**
     * 编写java代码
     * @param id 编写ID
     * @param javaString 编写代码
     * @return 编写结果
     */
    int compileJava(Long id, String javaString);
}